;:sys36864
	;.opt oo
	*= 51200
vicinit	=65409
strout	=$ab1e
bsin	=$ffcf
chrptr	=122
chrgot	=121
integer	=$b7f7
round	=$bc1b
latch	=820
cr	=13
ascflt	=$bcf3
byte	=$14
tmp	=2      	;schreiben in
tmp2	=4     	;lesen aus
tmp3	=251   	;anfang alt
tmp4	=253   	;ende alt +1
key	=198
exp	=$61
vorz	=$66
zeile	=214
setcr	=58732
return	=$aad7
bsout	=$ffd2
axout	=$bdcd
keybuf	=631
hey	=$a47b
konf	=1
repeat	=650
quote	=212
st	jmp mainstart
stadr	.word 0
zei	.byt 0
adr	.word 0
summe	.word 0
flag	.byt 0
old	.byt 0
new	.byt 0
text	.byt cr,cr,cr,"5","5",cr,"j",cr,"n",cr
adart	.byt 1,11,1,10,3,3,3,3,1,2,4,1,5,5,5,5,12,10,1,11
	.byt 3,6,6,6,1,9,1,9,5,8,8,8,5,11,1,11,3,3,3,3,1,2,4
	.byt 1,5,5,5,5,12,10,1,10,3,6,6,6,1,9,1,9,5,8,8,8,1
	.byt 11,1,11,3,3,3,3,1,2,4,1,5,5,5,5,12,10,1,10,3,6
	.byt 6,6,1,9,1,9,5,8,8,8,1,11,1,11,3,3,3,3,1,2,4,1
	.byt 13,5,5,5,12,10,1,10,3,6,6,6,1,9,1,9,5,8,8,8,1
	.byt 11,3,11,3,3,3,3,1,1,1,1,5,5,5,5,12,10,1,1,6,6,7
	.byt 7,1,9,1,1,1,8,1,1,2,11,2,11,3,3,3,3,1,2,1,1,5
	.byt 5,5,5,12,10,1,10,6,6,7,7,1,9,1,1,8,8,9,9,2,11
	.byt 3,11,3,3,3,3,1,2,1,1,5,5,5,5,12,10,1,10,3,6,6
	.byt 6,1,9,1,9,5,8,8,8,2,11,3,11,3,3,3,3,1,2,1,1,5
	.byt 5,5,5,12,10,1,10,3,6,6,6,1,9,1,9,5,8,8,8
;
typ	.byt 1,2,2,1,3,2,2,3,3,2,2,2,3
hello	.byte "\x13\x9a\x12transfer 6510 vers. 2.1 maschinensprache"
	.byte "(c) nh-020886-arr   ein nss programm '89\x05"
	.byte "\x92\x11zahleneingaben bitte dezimal..."
	.byt 13
	.byte "eingabe von 'x': ende"
	.byt 0
von	.byt cr
	.byte "\x9a\x11                von ? \x05"
	.byt 0
bis	.byt cr
	.byte "\x9a\x11       bis einschl. ? \x05"
	.byt 0
ab	.byt cr
	.byte "\x9a\x11               nach ? \x05"
	.byt 0
ok	.byt cr
	.byte "\x9a\x11        eingaben ok ? \x05"
	.byt 0
ur	.byt cr
	.byte "\x9a\x11          umrechnen ? \x05"
	.byt 0
radio	.byt cr
	.byte "\x91\x9a      schreibe nach \x05"
	.byt 0
kon	.byt cr
	.byte "\x9a\x11  lesekonfiguration ? \x05"
	.byt 0
ftxt	.byt cr
	.byte "\x11\x9aendadresse enthaelt nicht letztes byte"
	.byt cr
	.byte "des letzten befehles ! \x05\x12fehler..."
	.byt cr,0
end	.byt cr
	.byte "\x91  \x9akeine fehler. letztes byte bei \x05"
	.byt 0
abtxt	.byt cr
	.byte "\x05\x12abbruch."
	.byt cr,0
mainstart	pla
	pla
	lda #>back-1
	pha
	lda #<back-1
	pha
	jsr vorbereit
run	lda #<hello
	ldy #>hello
	jsr strout
	lda #<von
	ldy #>von
	jsr getadr
	bcs abb
	sta tmp2
	sty tmp2+1
	sta tmp3
	sty tmp3+1
	lda #<bis
	ldy #>bis
	jsr getadr
	bcc noabb
abb	lda #17
	sta zeile
	jsr setcr
	lda #<abtxt
	ldy #>abtxt
	jmp strout
noabb	adc #1
	bne noi
	iny
noi	sta tmp4
	sty tmp4+1
	lda #<ab
	ldy #>ab
	jsr getadr
	bcs abb
	sta tmp
	sty tmp+1
ggggg	lda #<kon
	ldy #>kon
	jsr getadr
	bcs abb
	tya
	beq nully
	lda #"\x91"
	jsr bsout
	jsr bsout
	bcc ggggg
nully	sta new
wec	lda #<ur
	ldy #>ur
	jsr strout
	lda #1
	sta quote
	jsr bsin
	cmp #"n"
	beq jn
	cmp #"x"
	beq abb
	cmp #"j"
	beq jn
	lda #"\x91"
	jsr bsout
	jsr bsout
	bcc wec
jn	sec
	sbc #"j"
	sta flag
ggg	lda #<ok
	ldy #>ok
	jsr strout
	lda #1
	sta quote
	jsr bsin
	cmp #"n"
	beq runny
	cmp #"j"
	beq anfang
	cmp #"x"
	bne fabb
	jmp abb
fabb	lda #"\x91"
	jsr bsout
	jsr bsout
	bcc ggg
runny	jmp run
anfang	jsr return
	jsr return
	jsr return
	lda #0
	sta summe
	sta summe+1
	cmp flag
	bne weiter
	lda tmp
	sec
	sbc tmp2
	sta summe
	lda tmp+1
	sbc tmp2+1
	sta summe+1
weiter	jsr rom
	lda #<radio
	ldy #>radio
	jsr strout
	ldx tmp
	lda tmp+1
	jsr axout
	jsr copy
	tax
	lda adart,x
	tax
	dex
	lda typ,x
	tax
	dex
	beq befende
	dex
	bne drei
	jsr count
	jsr testend
	bcc goon
	jmp falsch
goon	jsr copy
	jmp befende
drei	jsr getnext
	sta adr
	jsr testend
	bcs falsch
	jsr getnext
	sta adr+1
	jsr testend
	bcs falsch
	lda adr+1
	cmp tmp3+1
	bcc uebernehm
	bne goont
	lda adr
	cmp tmp3
	bcc uebernehm
goont	lda adr+1
	cmp tmp4+1
	bcc calc
	bne uebernehm
	lda adr
	cmp tmp4
	bcs uebernehm
calc	lda adr
	clc
	adc summe
	pha
	lda adr+1
	adc summe+1
	tax
	pla
	jmp setzein
uebernehm	lda adr
	ldx adr+1
setzein	jsr putnext
	txa
	jsr putnext
befende	jsr count
	jsr testend
	bcs ende
	jmp weiter
ende	jsr rom
	lda #<end
	ldy #>end
	jsr strout
	lda tmp
	sec
	sbc #1
	tax
	lda tmp+1
	sbc #0
	jsr axout
	jmp return
falsch	jsr rom
	lda #<ftxt
	ldy #>ftxt
	jmp strout
count	inc tmp
	bne rt
	inc tmp+1
rt	inc tmp2
	bne rtt
	inc tmp2+1
rtt	rts
testend	lda tmp2
	cmp tmp4
	bne rt0
	lda tmp2+1
	cmp tmp4+1
	bne rt0
	sec
	rts
rt0	clc
	rts
copy	pha
	jsr ram
	pla
	ldy #0
	lda (tmp2),y
	sta (tmp),y
	rts
getnext	inc tmp2
	bne gn
	inc tmp2+1
gn	ldy #0
	jsr ram
	lda (tmp2),y
	rts
putnext	inc tmp
	bne pn
	inc tmp+1
pn	ldy #0
	sta (tmp),y
	rts
vorbereit	ldx konf
	stx old
	ldx #10
	stx key
	lda #128
	sta repeat
filk	dex
	php
	lda text,x
	sta keybuf,x
	plp
	bpl filk
	jmp vicinit
rom	lda old
	sta konf
	cli
	rts
ram	sei
	lda new
	sta konf
	rts
getadr	ldx zeile
	stx zei
	sta stadr
	sty stadr+1
	jsr strout
	ldx #1
	stx quote
	dex
i1	jsr bsin
	cmp #cr
	beq i2
	sta latch,x
	inx
	bne i1
i2	lda #0
	sta latch,x
	lda latch
	cmp #"x"
	beq iks
	lda chrptr
	pha
	lda chrptr+1
	pha
	lda #<latch
	ldy #>latch
	sta chrptr
	sty chrptr+1
	jsr chrgot
	jsr ascflt
	jsr round
	pla
	sta chrptr+1
	pla
	sta chrptr
	lda vorz
	bmi i3
	lda exp
	cmp #$91
	bcs i3
	jsr integer
	lda byte
	ldy byte+1
	clc
	rts
i3	jsr return
	lda zei
	sta zeile
	jsr setcr
	lda stadr
	ldy stadr+1
	bne getadr
iks	sec
	rts
back	jsr rom
	jmp hey
